#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

// void handler(int signal_val)
// {
//     std::cout << getpid() << "接受到了信号:" << signal_val << std::endl;
// }

// int main()
// {
//     //signal(SIGINT, SIG_IGN);
//     //signal(2, handler);
//     while(1)
//     {
//         std::cout << getpid() << std::endl;
//         sleep(1);
//     }

//     return 0;
// }

// void Print(sigset_t &pending)
// {
//     std::cout << getpid() << ":";
//     for (int i = 31; i > 0; i--)
//     {
//         if (sigismember(&pending, i))
//         {
//             std::cout << "1";
//         }
//         else
//         {
//             std::cout << "0";
//         }
//     }
//     std::cout << "\r\n";
// }

// void handler(int signal_num)
// {
//     std::cout << signal_num << "信号解除成功" << std::endl;
//     sigset_t pending;
//     sigemptyset(&pending);
//     sigpending(&pending);
//     std::cout << "----------------------------------------" << std::endl;
//     Print(pending);
//     std::cout << "----------------------------------------" << std::endl;
// }

// int main()
// {
//     signal(2, handler);
//     sigset_t block, out_block;
//     sigemptyset(&block);
//     sigemptyset(&out_block);
//     sigaddset(&block, 2);
//     sigprocmask(SIG_SETMASK, &block, &out_block);
//     int count = 15;
//     while (1)
//     {
//         sigset_t pending;
//         sigemptyset(&pending);
//         sigpending(&pending);
//         Print(pending);
//         sleep(1);
//         count--;
//         if (count == 0)
//         {
//             sigprocmask(SIG_SETMASK, &out_block, nullptr);
//         }
//     }

//     return 0;
// }

void handler(int signal_num)
{
    std::cout << "捕捉到了信号：" << signal_num << std::endl;
}

int main()
{
    struct sigaction act, out_act;
    act.sa_handler = handler;
    act.sa_flags = 0;
    sigemptyset(&(act.sa_mask));
    sigaction(2, &act, &out_act);
    while(1)
    {
        std::cout << "hello world" << std::endl;
        sleep(1);
    }

    return 0;
}